//package com.codermn.并发访问控制.CAS自旋;
//
///**
// * <p>
// *     比如AtomicXXX原子类中的很多实现，就是借助unsafe的CAS来实现的，如下
// * </p>
// * @author jxau_scf
// * @date 2021/8/13 - 14:46
// */
//public class Demo {
//    public final int getAndIncrement() {
//        return unsafe.getAndAddInt(this, valueOffset, 1);
//    }
//
//
//    // unsafe 实现
//// cas + 自选，不断的尝试更新设置，直到成功为止
//    public final int getAndAddInt(Object var1, long var2, int var4) {
//        int var5;
//        do {
//            var5 = this.getIntVolatile(var1, var2);
//        } while(!this.compareAndSwapInt(var1, var2, var5, var5 + var4));
//
//        return var5;
//    }
//}


/*
        可以使用原子类来实现
 private AtomicInteger atomicInteger = new AtomicInteger(0);

    private final int getAndIncrement(){
        int current;
        int next;
        do {
            current = this.atomicInteger.get();
            next = current >= 2147483647 ? 0 : current + 1;
        }while (!atomicInteger.compareAndSet(current, next));
        System.out.println("******next: " + next);
        return next;
    }


 */
